package org.yh.leetcode;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * @Author: yh
 * @Description:
 * @Date: Created in 17:20 2019/4/17
 * @Modified By:
 */
public class Test {

    //给定一个长度为 n 的整数数组，你的任务是判断在最多改变 1 个元素的情况下，该数组能否变成一个非递减数列。
    // 3,4,2,3  4 2 1  3 5 4 4 6
    //我们是这样定义一个非递减数列的： 对于数组中所有的 i (1 <= i < n)，满足 array[i] <= array[i + 1]

    public static void main(String[] args) {

        BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder();
        String hashPass = bcryptPasswordEncoder.encode("0729");
        System.out.println(hashPass);
    }

    /**
     * 判断改变一个值是否能变成递增
     *
     * @param arr 3 2 1, 1 2 1
     * @return
     */
    private Boolean changeOneToUp(int arr[]) {
        Boolean flag = true;
        //2个数是一定可以的
        if (arr.length < 3) {
            return flag;
        }
        //3 5 4 4 6
        int count = 0;
        int left, right;
        for (int i = 0; i < arr.length - 1; i++) {
            //第一个数没有左边的值，所以单独拿出来
            if (i == 0) {
                //如果第一个数大于右边，则count++
                if (arr[0] > arr[1]) {
                    //第一个重新赋值为较小的数，因为要判断 后面的数是否小于他左边的数
                    arr[0] = arr[1];
                    count++;
                }
                continue;
            }
            left = arr[i - 1];
            right = arr[i + 1];
            //此时的值判断是否比右边大，count++
            if (arr[i] > right) {
                //左边比右边大,则此时右边的值只能最小为arr[i]
                if (left > right) {
                    arr[i + 1] = arr[i];
                } else {
                    //此时 arr[i]，最小值范围在left-right之间，所以赋值最小值：left的值
                    arr[i] = left;
                }
                count++;
            }
        }
        //count最大只能为1 ，才能符合条件
        if (count > 1) {
            flag = false;
        }

        return flag;
    }
}